PHP keuzes maken
Vergelijkingsoperatoren
We hebben al kennis gemaakt met de rekenkundige operatoren in PHP rekenen. Hier maken we kennis met de vergelijkingsoperatoren.
Vergelijkingsoperatoren vergelijken de waarden die voor en na de operator komt met elkaar. In de tabel hieronder staan de meest gebruikte operators.
Operator | Beschrijving |
== | de waarden zijn gelijk aan elkaar |
!= | de waarden zijn niet gelijk aan elkaar |
=== | de waarden en het gegeventype zijn gelijk aan elkaar |
!== | de waarden en het gegeventype zijn niet gelijk aan elkaar |
> | groter dan |
< | kleiner dan |
>= | gelijk aan, of groter dan |
<= | gelijk aan, of kleiner dan |
In de beslissingsstructuren zien we hoe je de vefgelijkingsoperatoren kan gebruiken.
if-elseif-else
Een if
statement, met eventueel de bijbehorende elseif
en else
statements) zijn de meest voorkomende statements om te kijken of er aan een bepaalde conditie is voldaan. Zo kan je bijvoorbeeld kijken of een getal groter of kleiner is dan een ander getal.
Vergelijken met ==
,
De waarden worden vergeleken maar er wordt niet gecontreleerd of het gegevenstype ook gelijk is:
$a = 30;
$b = 24;
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a == $b)
{
echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// Als de waarde van $a niet gelijk is aan $b, een ook niet groter, dan is die kleiner
else
{
echo '<p>de waarde van $a (' . $a . ') is kleiner dan de waarde van $b (' . $b . ').</p>';
}
Output:
de waarde van $a (30) is groter dan de waarde van $b (24)
Als we van $b
een string maken en dezelfde waarde eraan toekennen als aan $a
, zal de vergelijking met == ook TRUE
opleveren:
$a = 30;
$b = '30';
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a == $b)
{
echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ')</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ')</p>';
}
// Als de waarde van $a niet gelijk is aan $b, een ook niet groter, dan is die kleiner
else
{
echo '<p>de waarde van $a (' . $a . ') is kleiner dan de waarde van $b (' . $b . ')</p>';
}
Output:
de waarde van $a (30) is gelijk aan de waarde van $b (30)
Vergelijken met ===
$a = 30;
$b = '30';
// Is de waarde van $a gelijk aan de waarde van $b?
if ($a === $b)
{
echo '<p>de waarde van $a (' . $a . ') is gelijk aan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien groter dan de waarde van $b?
elseif ($a > $b)
{
echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// is de waarde van $a dan misschien kleiner dan de waarde van $b?
elseif ($a < $b)
{
echo '<p>de waarde van $a (' . $a . ') is groter dan de waarde van $b (' . $b . ').</p>';
}
// in het andere geval zijn het gegevenstype van $a en $b verschillend
else
{
echo '<p>het gegevenstype van $a (' . $a . ') is verschillend van dat van $b (' . $b . ').</p>';
}
Let erop dat we een elseif
hebben moeten toevoegen omdat de else
nu gebruikt wordt voor het geval de gegevenstypes verschillend zijn.
Output:
het gegevenstype van $a (30) is verschillend van dat van $b (30)
switch
Als er maar één variabele in de vergelijking staat kan je met meerder elseif
's werken, maar dit levert onoverzichtelijke code op, die meestal wat moeilijker te volgen is. Daarom is het beter om in dat geval het switch
-statement te gebruiken.
$a = 30; switch ($a) { case 30 : echo '<p>de waarde van $a (' . $a . ') is gelijk aan 30</p>'; break; case 20 : echo '<p>de waarde van $a (' . $a . ') is gelijk aan 20</p>'; break; case 10 : echo '<p>de waarde van $a (' . $a . ') is gelijk aan 10</p>'; break; default : echo '<p>de waarde van $a (' . $a . ') is niet gelijk 30, 20 of 10</p>'; }
Output:
de waarde van $a (30) is gelijk aan 30
Op het einde van de codeblok in een bepaalde 'case' plaats je een break
om te voorkomen dat er door wordt gegaan met de volgende 'case'. Als geen van de cases het geval zijn, wordt de default
case uitgevoerd. Bij een default
hoeft over het algemeen geen "break", omdat deze toch als laatste staat.
Door slim om te gaan met de break
statements en een kleine codeaanpassing kan je de bovenstaande switch statement ook als volgt implementeren:
$a = 30; switch ($a) { case 30 : case 20 : case 10 : echo '<p>de waarde van $a (' . $a . ') is gelijk aan ' . $a . '</p>'; break; default : echo '<p>de waarde van $a (' . $a . ') is niet gelijk 30, 20 of 10</p>'; }